package com.kawa.kemanage.mapper;

import com.kawa.kemanage.entity.AdCampaign;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface AdCampaignMapper {
    // 查询所有未删除的广告计划
    List<AdCampaign> findAll();

    // 根据ID查询未删除的广告计划
    AdCampaign findById(@Param("id") Integer id);

    // 分页查询未删除的广告计划
    List<AdCampaign> findByPage(@Param("offset") Integer offset, @Param("size") Integer size);

    // 查询未删除的广告计划总数
    long count();

    // 根据广告主ID分页查询未删除的广告计划
    List<AdCampaign> findByAdvertiserIdAndPage(
        @Param("advertiserId") Integer advertiserId,
        @Param("offset") Integer offset,
        @Param("size") Integer size
    );

    // 查询某个广告主未删除的广告计划总数
    long countByAdvertiserId(@Param("advertiserId") Integer advertiserId);

    // 检查未删除的广告计划是否存在
    boolean existsById(@Param("id") Integer id);

    // 插入新广告计划（默认未删除）
    void insert(AdCampaign campaign);

    // 更新广告计划
    void update(AdCampaign campaign);

    // 逻辑删除广告计划
    void logicDelete(@Param("id") Integer id);

    // 物理删除广告计划（谨慎使用）
    void delete(@Param("id") Integer id);

    boolean finishById(Integer id);

    // 分页查询已删除的广告计划
    List<AdCampaign> findDeletedByPage(@Param("offset") Integer offset, @Param("size") Integer size);

    // 查询已删除的广告计划总数
    long countDeleted();
}
